package com.ruoyi.web.lambda;

/**
 * @Program: RuoYi-Vue-chy->AddableDemo
 * @Description: 测试lambda表达式
 * @Author: hongyu.chen
 * @Date: 2025-03-07 16:44
 * @Version： 1.0
 **/
/*
    Lambda表达式的格式:(形式参数)->f代码块)
    练习3:
        1:定义一个接口(Addable)，里面定义一个抽象方法:int add(int x,int y);
        2:定义一个测试类(AddableDemo)，在测试类中提供两个方法
            一个方法是:useAddable(Addable a)
            一个方法是主方法，在主方法中调用useAddable方法
 */
public class AddableDemo {
    public static void main(String[] args) {
        useAddable(new Addable() {

            @Override
            public int add(int x, int y) {
                return x + y;
            }
        });

        useAddable((int x, int y) -> { return x * y ; } );

        // 可以省略类型
        useAddable((a,b) -> { return a + b + a ; } );

        useFlyable((String s) -> {
            System.out.println(s);
        });

        //如果参数有且只有一个，那么小括号可以省略
        useFlyable(s -> {
            System.out.println(s);
        });

        //如果代码语句只有一条，可以省略大括号和分号
        useFlyable(s -> System.out.println(s));

        useAddable((a,b) ->  a + b - a );
    }

    private static void useFlyable(Flyable f) {
        f.fly("哈哈哈哈");
    }

    private static void useAddable(Addable a){
       int sum =  a.add(5,50);
        System.out.println(sum);
    }

}
